package com.yc.thread;

/**
 * java是单继承，所以这样写线程极大限制类的可扩展性 -》实现Runnerable 可运行的任务
 */
public class Test2_继承thread   {
    public static void main(String[] args) {
        System.out.println("主方法 的开头");
        MyThread mt = new MyThread();
        mt.start();//线程启用  start
        //简写成：
        //new MyThread().start();

        //内部类
        InnerThread it = new InnerThread();
        it.start(); //启动线程要用start()   ->jvm会自动调用 线程中的run

    }

    //因为要在 main()这个静态方法中调用   这个内部类，所以这个内部类声明时要加入static
    //内部类写法：只有这个Test1_thread这个类才会用到InnerThread
    static class InnerThread extends Thread{
        public void run(){
            for(int i =0;i<3;i++){
                System.out.println("i的值为"+i);
                try {
                    Thread.sleep(1000);//1000毫秒也就是1秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}


    //方案一： 外部类 写一个类继承Thread   重写run()方法   在这个方法加入耗时的操作或阻塞操作
    //MyThead.start()  ->  start0()    native  cpp ->调用这个类的run()
    class MyThread extends Thread{
        //run()方法放入要执行的任务(耗时的操作，阻塞操作)
        public void run(){
           for(int i =0;i<3;i++){
               System.out.println("i的值为"+i);
               try {
                   Thread.sleep(1000);//1000毫秒也就是1秒
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
        }
    }
